package work.linruchang.util.annotation;

import java.lang.annotation.*;

/**
 * 连表注解
 */
@Target({ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface TableJoin {


    /**
     * 等价于{tableJoinFields}
     * 到时不会合并{tableJoinFields、value}的值，然后分发给给下面{TableLeftJoinFields、TableRightJoinFields、TableInnerJoinFields}数组里面
     * 所以请选择其中一种进行设置【value、tableJoinFields】
     * @return
     */
    TableJoinField[] value() default {};

    /**
     * 等价于{value}
     * 到时不会合并{tableJoinFields、value}的值，然后分发给给下面{TableLeftJoinFields、TableRightJoinFields、TableInnerJoinFields}数组里面
     * 所以请选择其中一种进行设置【value、tableJoinFields】
     * @return
     */
    TableJoinField[] tableJoinFields() default {};

    /**
     * 左连
     * @return
     */
    TableLeftJoinField[] tableLeftJoinFields() default {};

    /**
     * 右连
     * @return
     */
    TableRightJoinField[] tableRightJoinFields() default {};

    /**
     * 等值连
     * @return
     */
    TableInnerJoinField[] tableInnerJoinFields() default {};

}
